package cn.doitedu.dfdemo

import org.apache.spark.sql.{DataFrame, SparkSession}

/**
 * @Date 22.4.9
 * @Created by HANGGE
 * @Description
 *             使用spark中的SQL 处理结构化数据
 */
object Demo01 {
  def main(args: Array[String]): Unit = {
    //  获取Spark的会话
    val session = SparkSession
      .builder()
      .appName("sparksql 入门示例")
      .master("local[*]")
      .getOrCreate()
  /* // 之前使用的
    val sc = session.sparkContext*/

    // 加载结构化数据  处理
    val df: DataFrame = session.read.json("data/user.json")
    /**
     * // 解析了数据的结构
     * //  表的方式处理    RDD  +  结构(schema)
     * +---+------+---+----+
     * |age|gender| id|name|
     * +---+------+---+----+
     * | 23|     M|  1| zss|
     * | 33|     M|  2| lss|
     * +---+------+---+----+
     */
     // 注册表名   DataFrame 和 虚拟表映射
    df.createTempView("tb_user")
  // 使用SQL查询
    val frame: DataFrame = session.sql("select  id , name  from  tb_user")
    frame.show(2)

   /* df.show(2)
    // 和MySQL的处理方式一样
    val res: Dataset[Row] = df.where("age > 23")
    df.
    res.show(1)*/
    println(df.schema)

  }

}
